CouchDB একটি Document-Oriented NoSQL Database যা MVCC (Multi-Version Concurrency Control) প্রযুক্তি ব্যবহার করে ডেটার রিভিশন বা সংস্করণ নিয়ন্ত্রণ করে। এই রিভিশন ব্যবস্থার মাধ্যমে CouchDB ডকুমেন্টের বিভিন্ন সংস্করণ ট্র্যাক করে এবং একাধিক ব্যবহারকারী একই ডকুমেন্ট আপডেট করার সময় কনফ্লিক্ট এড়াতে সাহায্য করে।
ডকুমেন্টের প্রতিটি সংস্করণকে _rev ফিল্ডে রিভিশন আইডি হিসেবে সংরক্ষণ করা হয়। এটি CouchDB এর কনফ্লিক্ট ম্যানেজমেন্ট সিস্টেমের একটি গুরুত্বপূর্ণ অংশ, যা ডকুমেন্টের সংস্করণ এবং তার আপডেটের হিসাব রাখে।
_rev (revision) হল CouchDB তে একটি ডকুমেন্টের রিভিশন আইডেন্টিফায়ার। এটি একটি স্ট্রিং যা প্রতিটি ডকুমেন্টের সংস্করণ নির্ধারণ করে এবং ডকুমেন্টের পরিবর্তন বা আপডেটের সময় সেটি পরিবর্তিত হয়।
_rev ফিল্ডের মধ্যে সাধারণত দুটি অংশ থাকে:
উদাহরণ:
{
"_id": "user123",
"_rev": "1-aad4d2bcff6796b3174ac2f2182f5c1d",
"name": "John Doe",
"email": "john.doe@example.com"
}
এখানে:
CouchDB ডকুমেন্টের রিভিশন ম্যানেজমেন্ট এবং কনফ্লিক্ট রেজল্যুশন ব্যবস্থা প্রদান করে, যাতে একাধিক ব্যবহারকারী একে অপরের পরিবর্তনগুলি মেনে নিতে পারে। যদি একাধিক ব্যবহারকারী একই ডকুমেন্টে আলাদা আলাদা আপডেট করেন, CouchDB সেই আপডেটগুলোকে ভিন্ন সংস্করণ হিসেবে তৈরি করে এবং একে অপরের সাথে তুলনা করে।
যখন একটি নতুন ডকুমেন্ট তৈরি করা হয়, CouchDB _rev ফিল্ডের মধ্যে একটি প্রথম রিভিশন সংরক্ষণ করে। উদাহরণস্বরূপ, একটি নতুন ডকুমেন্টের _rev হতে পারে "1-2345"
, যেখানে "1"
রিভিশন সংখ্যা এবং "2345"
ডকুমেন্টের ডেটার হ্যাশ।
যখন একটি ডকুমেন্ট আপডেট করা হয়, CouchDB _rev ফিল্ডে একটি নতুন সংস্করণ প্রদান করে। _rev ফিল্ডটি রিভিশন সংখ্যা বাড়িয়ে এবং হ্যাশ পরিবর্তন করে আপডেট হওয়া ডেটা ট্র্যাক করে।
উদাহরণ: প্রথম সংস্করণ:
{
"_id": "user123",
"_rev": "1-2345",
"name": "John Doe",
"email": "john.doe@example.com"
}
আপডেট হওয়া সংস্করণ:
{
"_id": "user123",
"_rev": "2-abc123",
"name": "John Doe",
"email": "john.doe@newdomain.com"
}
এখানে:
"1-2345"
থেকে "2-abc123"
-এ, যা ডকুমেন্টের দ্বিতীয় সংস্করণ নির্দেশ করে।যদি একই ডকুমেন্টে একাধিক ব্যবহারকারী ভিন্ন সময়ে পরিবর্তন করেন, CouchDB বিভিন্ন সংস্করণ তৈরি করে এবং _rev ফিল্ডের মাধ্যমে তাদের মধ্যে পার্থক্য দেখায়। এই ক্ষেত্রে কনফ্লিক্ট সৃষ্টির সম্ভাবনা থাকে, এবং ব্যবহারকারীকে ম্যানুয়ালি _rev ফিল্ড ব্যবহার করে সর্বোত্তম সংস্করণ নির্বাচন করতে হবে।
CouchDB ডকুমেন্টের রিভিশন এবং _rev ফিল্ড ব্যবহার করে কনফ্লিক্ট সমাধান করার জন্য Conflict Resolution পদ্ধতি প্রদান করে। যখন CouchDB ডেটার মধ্যে কনফ্লিক্ট সনাক্ত করে, তখন এটি একাধিক সংস্করণ তৈরি করে এবং ব্যবহারকারীকে তাদের মধ্যে সিদ্ধান্ত নিতে দেয়।
CouchDB সাধারণত কনফ্লিক্ট সমাধান করতে automatic conflict resolution (যদি সম্ভব হয়) অথবা ব্যবহারকারীর দিক থেকে ম্যানুয়াল সমাধান প্রস্তাব করে।
CouchDB এর _rev ফিল্ড এবং Document revision ব্যবস্থাপনা ডেটার নিরাপত্তা এবং সঠিকতা বজায় রাখতে সহায়ক। এটি Multi-Version Concurrency Control (MVCC) প্রযুক্তি ব্যবহার করে একাধিক সংস্করণের মাধ্যমে ডেটার আপডেট এবং কনফ্লিক্ট ম্যানেজমেন্টকে কার্যকরভাবে পরিচালনা করে। _rev ফিল্ড ডকুমেন্টের পরিবর্তনগুলিকে সঠিকভাবে ট্র্যাক এবং সিঙ্ক্রোনাইজ করতে সহায়ক, যা CouchDB-কে একটি শক্তিশালী ডিস্ট্রিবিউটেড ডাটাবেস সিস্টেমে পরিণত করে।
common.read_more